perm filename DRAFT.1[AP,DBL]2 blob sn#116157 filedate 1974-08-21 generic text, type T, neo UTF8
00100	pUP6 Paper   			First Draft
00200	
00300	1. OUTLINE
00400		Outline
00500		Abstract
00600		Introduction
00700		Ideas
00800		Implementation
00900		Targets
01000		Performance
01100		Conclusions
01200	
01300	2. ABSTRACT
01400	A system has been implemented which can synthesize large inductive inference
01500	programs from restricted English dialogues.  All knowledge and all
01600	control resides in highly structured pieces of code called BEINGS. Each
01700	being has a similar structure, and may therefore be viewed as an extension
01800	of the concept of ACTORS [Hewitt, 1973].  The output code of the system is
01900	also in the form of beings, hence the synthesized program can answer
02000	questions about itself as it runs.   A general description of the
02100	system which realized these ideas is provided, and its target domain is
02200	discussed.  Some unexpected problems, and some unexpected rewards, were
02300	encountered.  Various measures of performance of Automatic Programming 
02400	Systems are proposed, and we compare the current system to previous ones.
02500	We conclude by pooling our ideas into a "view" of Automatic Programming,
02600	and mention future plans.
02700	
02800	2. INTRODUCTION
02900		In this paper we report on a Program-Understanding Program (pUP6)
03000	capable of generating large LISP programs. The methods employed are not
03100	formal, but rather involve structuring of knowledge about programming, about
03200	the task domain, and about transfer of control.  To date, pUP6 has
03300	synthesized three significantly different large (30-page) target programs:
03400	a Winston-like concept formation program [Winston,     ], a grammatical
03500	inference program, and an airline reservation system.  Extended dialogs
03600	are carried on with the user, in a small subset of English, in which the
03700	task is delineated and questionable details are discussed.  Although the
03800	details of these (dialogues and final programs) are the chief concern of
03900	the user, we assume that the reader is interested in studying the ideas
04000	pUP6 embodies, and how they are implemented.  So our treatment will follow
04100	these lines: First, the ideas are presented, including a discussion of
04200	BEINGS.  Next we describe the implementation, and explain our choice of
04300	targets. Only then will we mention performance. Finally, we relate this
04400	work to the field of Automatic Programming.
04500	
04600	3. IDEAS
04700		First, we resolve the uniformity vs. structure controversy.  The
04800	benefits of the former include easy addition of knowledge [Newell, l973]
04900	and simple methods for combining information [McCarthy,    ].  Structure,
05000	however, is necessary for efficient handling of large amounts of data. In
05100	pUP6, we integrate these two ideas into the concept of Beings.  A being is
05200	a collection of about thirty little bits of LISP code; the answers to thirty
05300	questions about the being. That is, we view a small program as equivalent
05400	to its answers to these fixed questions. Every scrap of knowledge, every bit of
05500	control structure should be encoded into beings. There is nothing else in
05600	the system but this interacting community.  Notice that while each being is
05700	highly structured, this structure is uniform over the entire community. Each
05800	being part is itself a little being, etc., and we stop this infinite regress
05900	when the contents of the being part becomes meaninglessly primitive. Each
06000	being is cognizant of the set of thirty questions, and in answering one of
06100	them it may freely ask quesions of other beings (often through nondetermi-
06200	nistic goal statements.)  The reader may glance below at the particular set
06300	of questions used, but we shall discuss our other ideas next.
06400		Since only beings exist, all our code must be written as beings, and
06500	must be written by beings.  A crucial consequence is that _some_ beings must
06600	write code. Our new idea is that the being who knows about X takes charge of
06700	generating code relating to X. For example, the SORT being can do sorting, and
06800	he can also write specialized sort routines, and he can answer questions about
06900	sorting.  A second consequence is that the output code will have all the
07000	"intelligence" that any being community has: it can write variations of itself,
07100	modify itself according to the user's complaints, and answer questions about
07200	what it is doing as it runs.
07300		In a similar vein, _some_ being(s) must do the translation of the 
07400	users' quasi-English inputs into being-usable form.  We choose to have each
07500	being X recognize English related to X.  Thus translation consists of
07600	querying "who can recognize ..." and waiting for a response. Thus our SORT
07700	being must also recognize and process phrases involving sorting or ordering.
07800		Two more ideas are present, constraints which reflect the author's
07900	philosophy:  one need not feel any reverence toward the anthropomorphic
08000	paradigm of programming (ignore details, catch them by blind debugging.)
08100	As in all programming, decisions continually crop up which the system is 
08200	not able to resolve at the time. We have the system spend a significant
08300	effort deferring the decision as long as possible. When, at last, no
08400	progress can be made without its resolution, if the system is still
08500	unsure, either the user settles the question of else a backtrack point is
08600	reluctantly set up.  The second bit of philosophy is that most of the
08700	carelessness bugs can be eliminated through this deferral and through
08800	very precise record-keeping.  Humans depend on their adaptability to 
08900	compensate for limitations in their brain hardware [see Newell and Simon,
09000	1973] but there is no need for an _automatic_ programming system to do so.
     

00100	8. ACKNOWLEDGEMENTS
00200	
00300		There are, of course, countless ideas embodied in any concrete
00400	project.  Sweeping philosophical assumptions are made simply in trying to
00500	d
00600	Program (pUP6) should include the best parts of all the best old ideas.
00700	W
00800	1973], heterarchy [Reddy, l973], structured programming [Dijkstra, l973],
00900	a
01000	directed invocation of procedural knowledge [Winograd, l972], the paradigm
01100	o
01200	[Green, l974].  Of course this list is incomplete; sophistocated ideas are
01300	captured in the languages themselves: QLISP [Sacerdoti], INTERLISP 
01400	[
01500	store, one may acheive new heights merely by synergy.
01600		The success of the BEINGS project, as well as the precursor PUP
01700	programs [Green et al., 1974] is due in large measure to the encouragement,
01800	advice, support, and creative enrgy of C. Cordell Green.  I have also drawn
01900	upon discussions with the SAIL Auotmatic Programming Group, and in par-
02000	ticular with R. Waldinger, D. Barstow, B. McCune, D. Shaw, and L. Steinberg.